/*
 *功能:公用操作表格数据类插件
 * author:Peter.zheng
 * 2011-11-6
 * ver 1.0
 *
 */
;
(function($) {
    jQuery.fn.extend({
        // 表格或者列表隔行变色插件
        "element_even": function(options) {
            // 参数定义
            options=$.extend({
                element:"li",
                odd:"current",
                even:"even",
                selected:"selected"
            },options|| {}
            );
            // 函数体定义
            return this.each( function() {
                //在each中this代表dom元素，不是jquery对象
                var expr=options.element+":odd";
                var expr2=options.element+":even";
                $(this).find(expr).addClass(options.odd);
                $(this).find(expr2).addClass(options.even);
            })
            return this;
        },
        //实现table中有checkbox选中高亮的插件代码
        "alterBgColor": function(options) {
            options=$.extend({
                selected:"selected",
                hasCheckbox:true,
                isEven:true,
                trHasClick:true,
                callback:function(){
                    
                }
            },options|| {})
            var that=this;
            if(options.isEven) {
                $("tbody>tr:odd",this).addClass(options.odd);
                $("tbody>tr:even",this).addClass(options.even);
            }
            if(options.trHasClick&&options.hasCheckbox) {
                $("tbody>tr",this).click( function() {
                    var hasSelected=$(this).hasClass(options.selected);
                    $(this)[hasSelected?"removeClass":"addClass"](options.selected).find(':checkbox').attr('checked',!hasSelected);
                    //callback
                    options.callback();
                   // console.log($(this));
                    options._srcElement=$(this);
                    options._srcCheckbox=$(this).find(":checkbox");
                });
                $("thead>tr",this).click( function() {
                    var is_checked;
                    if($(this).find(":checked").length==1) {
                        is_checked=true;
                    } else if($(this).find(":checked").length==0) {
                        is_checked=false;
                    }
                    $(this).find(":checkbox").attr('checked',!is_checked);
                    if(is_checked) {
                        $("tbody>tr",that).removeClass(options.selected);
                        $("tbody>tr",that).find(":checkbox").attr('checked',false);
                    } else {
                        $("tbody>tr",that).addClass(options.selected);
                        $("tbody>tr",that).find(":checkbox").attr('checked',true);
                    }
                    options._srcElement=$(this);
                    options.callback();

                })
                this.find("thead>tr").find(":checkbox").click( function() {
                    var sec_checked=$(this).is(":checked");
                    $(this).attr("checked",!sec_checked);
                    options._srcElement=$(this).find(":checkbox");
                    options.callback();
                    return false;
                })
            }
            $('tbody>tr:has(:checked)',this).addClass(options.selected);
            return this;
        },
        //jquery input全选，反选，全不选插件
        "checkBox" : function(state) {
            this.each( function() {
                switch (state) {
                    case 'all':
                        $(this).attr("checked",true);
                        break;
                    case 'none':
                        $(this).attr("checked",false);
                        break;
                    case 'toggle':
                        $(this).attr("checked",!this.checked);
                        break;
                }
            });
        },
        //jquery 取所有input值插件
        "checkedValue" : function() {
            var str=[];
            this.each( function() {
                str+=$(this).val()+",";
            })
            return str;
        },
        "eventTarget":function(e){
            var _eventTarget=null;
            this.each(function(e){
                _eventTarget=e.target;
                return _eventTarget;
            })
        }
    }
    )
})(jQuery);